# -*- coding: utf-8 -*-
"""
安装和部署脚本
"""

import subprocess
import sys
import os


def install_requirements():
    """安装依赖包"""
    print("正在安装依赖包...")
    try:
        subprocess.check_call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt'])
        print("依赖包安装完成")
        return True
    except subprocess.CalledProcessError as e:
        print(f"依赖包安装失败: {e}")
        return False


def create_directories():
    """创建必要的目录"""
    print("创建目录结构...")
    directories = ['logs', 'data', 'backup']
    
    for directory in directories:
        if not os.path.exists(directory):
            os.makedirs(directory)
            print(f"创建目录: {directory}")
    
    print("目录创建完成")


def test_system():
    """测试系统组件"""
    print("测试系统组件...")
    
    try:
        # 测试API连接
        print("测试API连接...")
        result = subprocess.run([sys.executable, 'main.py', '--test-api'], 
                              capture_output=True, text=True, timeout=30)
        
        if result.returncode == 0:
            print("API连接测试成功")
        else:
            print(f"API连接测试失败: {result.stderr}")
        
        print("系统组件测试完成")
        return True
        
    except Exception as e:
        print(f"系统测试失败: {e}")
        return False


def main():
    """主函数"""
    print("=== 股票交易分析系统安装程序 ===")
    
    # 检查Python版本
    if sys.version_info < (3, 8):
        print("错误: 需要Python 3.8或更高版本")
        sys.exit(1)
    
    print(f"Python版本: {sys.version}")
    
    # 安装依赖
    if not install_requirements():
        print("安装失败，请检查网络连接和权限")
        sys.exit(1)
    
    # 创建目录
    create_directories()
    
    # 测试系统
    test_system()
    
    print("\n=== 安装完成 ===")
    print("系统已准备就绪，可以使用以下命令启动：")
    print("  python main.py                    # 启动系统")
    print("  python main.py --test-api         # 测试API连接")
    print("  python main.py --manual buy       # 手动执行买入任务")
    print("  python main.py --manual sell      # 手动执行收盘统计任务")


if __name__ == "__main__":
    main()
